package bundler

import "fmt" // 用于格式化输入输出

// 定义打包级别对应的源文件
var sourceFilesLevels = map[int][]string{
	// 级别1：核心文件
	1: {
		`./webpage`,
		`./local_data/links.json`,
		`./Lunar-Astral-Agents.exe`,
		`./local_data/default_config.json`,
	},
	// 级别2：核心文件 + 扩展文件
	2: {
		`./webpage`,
		`./local_data/extension`,
		`./local_data/links.json`,
		`./Lunar-Astral-Agents.exe`,
		`./local_data/default_config.json`,
	},
	// 级别3：所有文件
	3: {
		`./webpage`,
		`./local_data/models`,
		`./local_data/extension`,
		`./local_data/links.json`,
		`./Lunar-Astral-Agents.exe`,
		`./local_data/default_config.json`,
	},
}

// getSourcesByLevel 根据传入的打包级别获取对应的源文件列表。
// 如果传入的级别无效，会返回错误。
// 同时会打印该打包级别包含的所有文件信息。
// 参数 level: 打包级别，有效值为 1, 2, 3。
// 返回值: 对应级别的源文件列表和可能出现的错误。
func getSourcesByLevel(level int) ([]string, error) {
	// 从 sourceFilesLevels 映射中获取对应级别的源文件列表
	sources, exists := sourceFilesLevels[level]
	// 检查传入的级别是否有效
	if !exists {
		return nil, fmt.Errorf("无效的打包级别: %d (可用级别: 1, 2, 3)", level)
	}
	// 打印当前打包级别信息
	fmt.Printf("打包级别 %d 包含以下文件:\n", level)
	// 遍历源文件列表并打印每个文件
	for i, src := range sources {
		fmt.Printf("  %d. %s\n", i+1, src)
	}
	// 打印一个空行，用于分隔不同的输出部分
	fmt.Println()
	// 返回对应级别的源文件列表
	return sources, nil
}
